package rohyunji.swing;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class SwingMenu extends JMenuBar
{
//메뉴작성법
//JmenuBar - > Jmenu - > JmenuItem
	private JMenu mnFile=null;//파일
	private JMenu mnEdit=null;//편집
	private JMenu mnView=null;//보기
	private JMenu mnTool=null;//도구
	private JMenu mnWnd=null;//창
	private JMenu mnHelp=null;//도움말
	private static SwingMenuActionListener mnal=null;
	public SwingMenu() 
	{
		mnal=new SwingMenuActionListener();
		makeMenu();
		makeMenuItem();
		addShortCut();
		addMenu();
		
	}

	








	//메뉴바에 추가할 메뉴를 생성
	private void makeMenu() 
	{	
		
		
		mnFile=new JMenu(" 파 일 (F) ");

//		mnFile.setFont(new Font("맑은 고딕",Font.BOLD,12));
//		메뉴글꼴변경을 위해 setFont 메서드 사용 하지만 모든메뉴와 메뉴항목에 setFont
//		귀찮음. 그러므로 프로그램전체글꼴을 변경하는것이 나음
		mnEdit=new JMenu(" 편 집 (E) ");
	
		mnView=new JMenu(" 보 기 (V) ");

		mnTool=new JMenu(" 도 구 (T) ");
	
		mnWnd=new JMenu("창 (W)");
	
		
		mnHelp=new JMenu("도 움 말 (H)");
		
		
		
		mnFile.add(makeMenuItems("새파일(N)", "new",KeyEvent.VK_N, true,KeyEvent.VK_1));
		mnFile.addSeparator();
	
		mnFile.add(makeMenuItems("닫 기(C)", "close",KeyEvent.VK_C, false,KeyEvent.VK_2));
		mnFile.addSeparator();
	
		mnFile.add(makeMenuItems("종 료(X)", "exit", KeyEvent.VK_X, true,KeyEvent.VK_3));
		mnHelp.add(makeMenuItems("About(A)","about",KeyEvent.VK_A,true,KeyEvent.VK_4));
	}
	//메뉴항목에 단축키 지정
	private void addShortCut() 
	{
		mnFile.setMnemonic(KeyEvent.VK_F);
		mnEdit.setMnemonic(KeyEvent.VK_E);
		mnView.setMnemonic(KeyEvent.VK_V);
		mnTool.setMnemonic(KeyEvent.VK_T);
		mnWnd.setMnemonic(KeyEvent.VK_W);
		mnHelp.setMnemonic(KeyEvent.VK_H);
		
	}
//생성 및 설정된 메뉴를 메뉴바에 추가
	private void addMenu() 
	{
		add(mnFile);
		add(mnEdit);
		add(mnView);
		add(mnTool);
		add(mnWnd);
		add(mnHelp);
	}
//	메뉴에 추가할 메뉴항목 menuitem 생성
	private JMenuItem makeMenuItems(String text,String img,int skey,boolean off,
			int akey)
	{

	
		String icon=null;//메뉴에 쓸 아이콘
		if(img!=null) //아이콘으로 쓸이미지가 있다면
			icon="/images/menu/"+img+".png";
		JMenuItem mnitem=null;
		 try 
		 {
			 if(img!=null) mnitem=new JMenuItem(text,
			 new ImageIcon(getClass().getResource(icon)));
		 }catch(Exception e){ mnitem=new JMenuItem(text);}
		
		mnitem.setEnabled(off);//메뉴 활성/비활성
		mnitem.setMnemonic(skey);
		mnitem.setAccelerator
		(KeyStroke.getKeyStroke(akey, ActionEvent.CTRL_MASK));//단축키
		mnitem.addActionListener(mnal);
		mnitem.setActionCommand(img);
		return mnitem;
	}

	private void makeMenuItem() {
		// TODO Auto-generated method stub
		
		
	}

}
